package ufpr.ees.suhck.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Entity
@NamedQueries({
    @NamedQuery(name = PlanoSaude.FIND_POR_CNPJ, query = "SELECT m FROM PlanoSaude m "
            + "WHERE m.cnpj like :cnpj")
})
public class PlanoSaude implements Serializable {

    public static final String FIND_POR_CNPJ = "PlanoSaude.findPorCnpj";
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @NotNull
    @Size(max = 255, message = "Nome deve ter no máximo {max} caracteres.")
    @Column(nullable = false)
    private String nome;
    
    @NotNull
    @Size(max = 20, message = "CNPJ deve ter no máximo {max} caracteres.")
    @Column(nullable = false, length = 20, unique = true)
    private String cnpj;

    @Column(length = 45)
    private String email;

    @Size(max = 255, message = "Endereço deve ter menos de {max} caracteres.")
    private String endereco;

    @Size(max = 25, message = "Telefone deve ter no máximo {max} caracteres.")
    @Column(length = 25)
    private String telefone;

    @Size(max = 25, message = "Contato deve ter no máximo {max} caracteres.")
    @Column(length = 25)
    private String contato;

    @OneToMany(mappedBy = "planoSaude")
    private List<PacientePlano> pacientesPlano = new ArrayList<PacientePlano>();
    
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCnpj() {
        return cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getTelefone() {
        return telefone;
    }

    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    public String getContato() {
        return contato;
    }

    public void setContato(String contato) {
        this.contato = contato;
    }

    public List<PacientePlano> getPacientesPlano() {
        return pacientesPlano;
    }

    public void setPacientesPlano(List<PacientePlano> pacientesPlano) {
        this.pacientesPlano = pacientesPlano;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}
